//package com.yangxu.hospital.tools.utils;
//
//import org.springframework.http.HttpStatus;
//import org.springframework.security.core.Authentication;
//import org.springframework.security.core.context.SecurityContextHolder;
//import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
//
//import java.util.List;
//import java.util.concurrent.atomic.AtomicBoolean;
//
//public class SecurityUtils
//{
//
//    public static String getUserId(){
//       return getLoginUser().getUser().getUserId().toString();
//    }
//
//
//    public static String getUsername()
//    {
//        try
//        {
//            return getLoginUser().getUsername();
//        }
//        catch (Exception e)
//        {
//            throw new CustomException("获取用户账户异常", HttpStatus.UNAUTHORIZED);
//        }
//    }
//
//
//    public static LoginUser getLoginUser()
//    {
//        try
//        {
//            return (LoginUser) getAuthentication().getPrincipal();
//        }
//        catch (Exception e)
//        {
//            throw new CustomException("获取用户信息异常", HttpStatus.UNAUTHORIZED);
//        }
//    }
//
//    public static Authentication getAuthentication()
//    {
//        return SecurityContextHolder.getContext().getAuthentication();
//    }
//
//
//    public static String encryptPassword(String password)
//    {
//        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
//        return passwordEncoder.encode(password);
//    }
//
//
//    public static boolean matchesPassword(String rawPassword, String encodedPassword)
//    {
//        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
//        return passwordEncoder.matches(rawPassword, encodedPassword);
//    }
//
//
//    public static boolean isAdmin(Long userId)
//    {
//        return userId != null && 1L == userId;
//    }
//
//    public static Example.Criteria setStateDeleted(Example.Criteria criteria, String state, String deleted)
//    {
//        if (isAdmin(Long.parseLong(getUserId()))){
//            criteria.andEqualTo("state",state == null || state.equals("") ? null : state);
//            criteria.andEqualTo("deleted",deleted  == null || deleted.equals("") ? null : deleted);
//        }else {
//            criteria.andEqualTo("state",0);
//            criteria.andEqualTo("deleted",0);
//        }
//        return criteria;
//    }
//
//    /**
//     * 判断是否有某个角色
//     * @param role
//     * @return
//     */
//    public static boolean isRole(String role)
//    {
//        List<SysRole> roles = getLoginUser().getUser().getRoles();
//        AtomicBoolean b = new AtomicBoolean(false);
//        roles.forEach(r->{
//            if (r.getRoleKey().equals(role)){
//                b.set(true);
//            }
//        });
//        return b.get();
//    }
//
//    /**
//     * 判断是不是root管理员
//     * @return
//     */
//    public static boolean isRoot()
//    {
//        return isRole("root");
//    }
//
//    /**
//     * 判断是否是超级管理员
//     * @return
//     */
//    public static boolean isAdmin()
//    {
//        return isAdmin(Long.valueOf(getUserId()));
//    }
//
//
//
//    /**
//     * 获取医院id
//     * @return
//     */
//    public static Long getHId()
//    {
//        return getSysUser().getHId();
//    }
//}
